#include <bits/stdc++.h>
using namespace std;
int t;
int n,m,l,v;
int a[100005][4],b[100005];
bool tpA(){
	for(int i=1;i<=n;i++){
		if(a[i][3]!=0)return 0;
	}
	return 1;
}
void tA(){
	int cnt=0;
	for(int i=1;i<=n;i++){
		if(a[i][2]>v&&a[i][1]<b[m])cnt++;
	}
	cout<<cnt<<" "<<m-1<<"\n";
}
bool tpB(){
	for(int i=1;i<=n;i++){
		if(a[i][3]<=0)return 0;
	}
	return 1;
}
void tB(){
	int cnt=0;
	for(int i=1;i<=n;i++){
		if(a[i][1]<b[m]){
			if(a[i][2]*a[i][2]+2*a[i][3]*(b[m]-a[i][1])>v*v){
				cnt++;
			}
		}
	}
	cout<<cnt<<" "<<m-1<<"\n";
}
int main(){
	freopen("detect.in","r",stdin);
	freopen("detect.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>m>>l>>v;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=3;j++){
				cin>>a[i][j];
			}
		}
		for(int i=1;i<=m;i++){
			cin>>b[i];
		}
		sort(b+1,b+m+1);
		if(tpA())tA();
		else if(tpB())tB();
	}
}
